{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Phonopy in pyiron\n",
    "\n",
    "We will use the quasi-harmonic approximation (via PyIron's implementation of the popular phonopy package) to evaluate look at thermal expansion and self-diffusion in Aluminium"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:42:45.561106Z",
     "start_time": "2019-09-04T10:42:42.138399Z"
    }
   },
   "outputs": [],
   "source": [
    "# Generic imports\n",
    "from pyiron.project import Project\n",
    "import numpy as np\n",
    "%matplotlib  inline\n",
    "import matplotlib.pylab as plt\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:42:52.724213Z",
     "start_time": "2019-09-04T10:42:45.563333Z"
    }
   },
   "outputs": [],
   "source": [
    "pr = Project(\"PhonopyExample\")\n",
    "pot =  'Al_Mg_Mendelev_eam'\n",
    "pr.remove_jobs(recursive=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Helper functions\n",
    "\n",
    "Because repeating code is evil."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:42:52.732051Z",
     "start_time": "2019-09-04T10:42:52.726661Z"
    }
   },
   "outputs": [],
   "source": [
    "def make_phonopy_job(template_job, name):\n",
    "    \"\"\"\n",
    "    Create a phonopy job from a reference job.\n",
    "    \n",
    "    Args:\n",
    "        template_job (pyiron job): The job to copy.\n",
    "        name (str): What to call this new job.\n",
    "        \n",
    "    Returns:\n",
    "        A new phonopy job.\n",
    "    \"\"\"\n",
    "    project = template_job.project\n",
    "    \n",
    "    # What I want:\n",
    "    # job_type =  template_job.job_type\n",
    "    # What I have to do instead:\n",
    "    job_type = pr.job_type.Lammps\n",
    "    \n",
    "    ref = project.create_job(job_type, name + \"_ref\")\n",
    "    ref.structure = template_job.get_final_structure().copy()\n",
    "    ref.potential = template_job.potential\n",
    "    \n",
    "    phono = project.create_job(pr.job_type.PhonopyJob, name)\n",
    "    phono.ref_job = ref\n",
    "    return phono"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:42:52.744061Z",
     "start_time": "2019-09-04T10:42:52.733757Z"
    }
   },
   "outputs": [],
   "source": [
    "def scale_structure(struct, scale):\n",
    "    \"\"\"\n",
    "    Rescale the atomic positions and cell of a structure simultaneously. \n",
    "    Accepts rescaling by an arbitrary real-valued 3x3 numpy array, but a float can be given\n",
    "    for isotropic rescaling.\n",
    "    \n",
    "    Args:\n",
    "        struct (Structure object): The structure to rescale.\n",
    "        scale (float or np.array(3,3)): The matrix to rescale by. (float -> isotropic.)\n",
    "        \n",
    "    Returns:\n",
    "        A rescaled copy of the structure.\n",
    "        \n",
    "    ..TODO: Double check that the scaling matrix still spans 3-space (determinant check?)\n",
    "    \"\"\"\n",
    "    if isinstance(scale, float) or isinstance(scale, int):\n",
    "        scale_mat = scale * np.eye(3)\n",
    "    else:\n",
    "        assert(scale.shape == (3,3))\n",
    "        scale_mat = scale.T\n",
    "    new_struct = struct.copy()\n",
    "    new_struct.cell = np.dot(struct.cell, scale_mat)\n",
    "    new_struct.positions = np.dot(struct.positions, scale_mat)\n",
    "    return new_struct\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:42:52.755781Z",
     "start_time": "2019-09-04T10:42:52.745596Z"
    }
   },
   "outputs": [],
   "source": [
    "def scale_array(arr, scaler=None, new_range=1.):\n",
    "    \"\"\"\n",
    "    Linearly transforms an array so that values equal to the minimum and maximum of the \n",
    "    `scaler` array are mapped to the range (0, `new_range`). Note that rescaled values can \n",
    "    still lie outside this range if the orignal values of `arr` are outside the bounds of \n",
    "    `scaler`.\n",
    "    \n",
    "    Args:\n",
    "        arr (np.array): Array to rescale.\n",
    "        scaler (np.array): Array by which to rescale. Default is `arr`.\n",
    "        new_range (float): New value for data which was the size `np.amax(scaler)`. \n",
    "          Default is 1.\n",
    "    \"\"\"\n",
    "    if scaler is None:\n",
    "        scaler = arr\n",
    "    return new_range * (arr - np.amin(scaler)) / np.ptp(scaler)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Thermal Expansion\n",
    "\n",
    "What does the QHA say the lattice constant is as a function of temperature?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:42:52.766781Z",
     "start_time": "2019-09-04T10:42:52.757314Z"
    }
   },
   "outputs": [],
   "source": [
    "pr_te = pr.create_group(\"ThermalExpansion\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Relax the unit cell\n",
    "\n",
    "If we were doing VASP instead it would be important to do the least computation as possible, so here we'll start by relaxing a simple unit cell to turn into a supercell later."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:42:52.814737Z",
     "start_time": "2019-09-04T10:42:52.768355Z"
    }
   },
   "outputs": [],
   "source": [
    "job_unit = pr_te.create_job(pr.job_type.Lammps, \"UnitCell\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:42:52.958732Z",
     "start_time": "2019-09-04T10:42:52.849374Z"
    }
   },
   "outputs": [],
   "source": [
    "basis = pr_te.create_structure(\"Al\", \"fcc\", 4.04)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:42:52.973204Z",
     "start_time": "2019-09-04T10:42:52.960821Z"
    }
   },
   "outputs": [],
   "source": [
    "job_unit.structure = basis\n",
    "job_unit.potential = pot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:42:54.650419Z",
     "start_time": "2019-09-04T10:42:52.974822Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The job UnitCell was saved and received the ID: 3596380\n"
     ]
    }
   ],
   "source": [
    "job_unit.calc_minimize(pressure=0.0)\n",
    "job_unit.run()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:42:54.868129Z",
     "start_time": "2019-09-04T10:42:54.653444Z"
    }
   },
   "outputs": [],
   "source": [
    "basis_rel = job_unit.get_final_structure()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Relax the bulk supercell\n",
    "\n",
    "A relaxation which should take zero steps given our starting position!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:42:55.007799Z",
     "start_time": "2019-09-04T10:42:54.869931Z"
    }
   },
   "outputs": [],
   "source": [
    "job_bulk_1 = pr_te.create_job(pr.job_type.Lammps, \"Bulk_1\")\n",
    "# The _1 here refers to the fact that the volume has been rescaled by a factor of \"1.0\"\n",
    "# (i.e. it hasn't been rescaled)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:42:55.087876Z",
     "start_time": "2019-09-04T10:42:55.069071Z"
    }
   },
   "outputs": [],
   "source": [
    "n_reps = 3\n",
    "job_bulk_1.structure = basis_rel.repeat(rep=n_reps)\n",
    "job_bulk_1.potential = pot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:42:55.170754Z",
     "start_time": "2019-09-04T10:42:55.089515Z"
    }
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "472ba29eeb924d7597df157a568e3c20",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "_ColormakerRegistry()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "job_bulk_1.structure.plot3d();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:42:56.977592Z",
     "start_time": "2019-09-04T10:42:55.172254Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The job Bulk_1 was saved and received the ID: 3596381\n"
     ]
    }
   ],
   "source": [
    "job_bulk_1.calc_minimize(pressure=0.0)\n",
    "job_bulk_1.run()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-03T17:28:21.880891Z",
     "start_time": "2018-12-03T17:28:21.877463Z"
    }
   },
   "source": [
    "### Calculate phonons\n",
    "\n",
    "Run phonopy on the bulk supercell"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:42:57.716378Z",
     "start_time": "2019-09-04T10:42:56.980543Z"
    }
   },
   "outputs": [],
   "source": [
    "phono_bulk_1 = make_phonopy_job(job_bulk_1, \"PhonoBulk_1\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:43:21.280242Z",
     "start_time": "2019-09-04T10:42:57.789292Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The job PhonoBulk_1 was saved and received the ID: 3596382\n",
      "The job supercell_phonon_0 was saved and received the ID: 3596383\n"
     ]
    }
   ],
   "source": [
    "phono_bulk_1.run()\n",
    "# Run performs a whole bunch of child calculations\n",
    "# Each one has the positions slightly deformed in the symmetry-appropriate ways needed\n",
    "# to get the phonon properties"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:43:21.766635Z",
     "start_time": "2019-09-04T10:43:21.325947Z"
    }
   },
   "outputs": [],
   "source": [
    "# Let's see what we got...\n",
    "T_min = 0\n",
    "T_max = 800 # a bit below melting\n",
    "T_step = 25\n",
    "temperatures = np.linspace(T_min, T_max, int((T_max - T_min) / T_step))\n",
    "tp_bulk_1 = phono_bulk_1.get_thermal_properties(temperatures=temperatures) \n",
    "# `get_thermal_properties` uses the displacements and forces to generate phonon information"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:43:22.287922Z",
     "start_time": "2019-09-04T10:43:21.768415Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Free energy  ($U+F_{vib}$)  [eV]')"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "U_bulk_1 = job_bulk_1.output.energy_pot[-1]\n",
    "Fvib_bulk_1 = tp_bulk_1.free_energies\n",
    "plt.plot(temperatures, U_bulk_1 + Fvib_bulk_1)\n",
    "plt.xlabel(\"Temperature [K]\")\n",
    "plt.ylabel(\"Free energy  ($U+F_{vib}$)  [eV]\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Calculate thermal expansivity\n",
    "\n",
    "Above we have the (QHA approximation to the) free energy as a function of temperature at a fixed volume. To evaluate the thermal expansivity, we need to create the entire F(V,T) surface. To get this, we just loop over jobs like the above, but scaled to have different lattice constants."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:43:22.293027Z",
     "start_time": "2019-09-04T10:43:22.289628Z"
    }
   },
   "outputs": [],
   "source": [
    "# According to Wikipedia, the thermal expansivity is about 0.0023% / Kelvin\n",
    "# So at our maximum temperature, we expect around 1.8% expansion\n",
    "scale_min = 0.995\n",
    "scale_max = 1.02\n",
    "scale_step = 0.002\n",
    "scales = np.linspace(scale_min, scale_max, int((scale_max - scale_min) / scale_step))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:43:22.338111Z",
     "start_time": "2019-09-04T10:43:22.294520Z"
    }
   },
   "outputs": [],
   "source": [
    "# Let's keep things clean by making another sub-directory\n",
    "pr_scales = pr_te.create_group(\"ScanScales\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:49:08.478135Z",
     "start_time": "2019-09-04T10:43:22.339743Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The job Bulk_0_995 was saved and received the ID: 3596385\n",
      "The job PhonoBulk_0_995 was saved and received the ID: 3596386\n",
      "The job supercell_phonon_0 was saved and received the ID: 3596387\n",
      "The job Bulk_0_9972727272727273 was saved and received the ID: 3596388\n",
      "The job PhonoBulk_0_9972727272727273 was saved and received the ID: 3596389\n",
      "The job supercell_phonon_0 was saved and received the ID: 3596390\n",
      "The job Bulk_0_9995454545454545 was saved and received the ID: 3596394\n",
      "The job PhonoBulk_0_9995454545454545 was saved and received the ID: 3596400\n",
      "The job supercell_phonon_0 was saved and received the ID: 3596405\n",
      "The job Bulk_1_0018181818181817 was saved and received the ID: 3596418\n",
      "The job PhonoBulk_1_0018181818181817 was saved and received the ID: 3596419\n",
      "The job supercell_phonon_0 was saved and received the ID: 3596420\n",
      "The job Bulk_1_0040909090909091 was saved and received the ID: 3596434\n",
      "The job PhonoBulk_1_0040909090909091 was saved and received the ID: 3596436\n",
      "The job supercell_phonon_0 was saved and received the ID: 3596439\n",
      "The job Bulk_1_0063636363636363 was saved and received the ID: 3596449\n",
      "The job PhonoBulk_1_0063636363636363 was saved and received the ID: 3596450\n",
      "The job supercell_phonon_0 was saved and received the ID: 3596451\n",
      "The job Bulk_1_0086363636363636 was saved and received the ID: 3596456\n",
      "The job PhonoBulk_1_0086363636363636 was saved and received the ID: 3596458\n",
      "The job supercell_phonon_0 was saved and received the ID: 3596461\n",
      "The job Bulk_1_010909090909091 was saved and received the ID: 3596473\n",
      "The job PhonoBulk_1_010909090909091 was saved and received the ID: 3596475\n",
      "The job supercell_phonon_0 was saved and received the ID: 3596478\n",
      "The job Bulk_1_0131818181818182 was saved and received the ID: 3596488\n",
      "The job PhonoBulk_1_0131818181818182 was saved and received the ID: 3596490\n",
      "The job supercell_phonon_0 was saved and received the ID: 3596494\n",
      "The job Bulk_1_0154545454545454 was saved and received the ID: 3596505\n",
      "The job PhonoBulk_1_0154545454545454 was saved and received the ID: 3596507\n",
      "The job supercell_phonon_0 was saved and received the ID: 3596510\n",
      "The job Bulk_1_0177272727272728 was saved and received the ID: 3596521\n",
      "The job PhonoBulk_1_0177272727272728 was saved and received the ID: 3596523\n",
      "The job supercell_phonon_0 was saved and received the ID: 3596526\n",
      "The job Bulk_1_02 was saved and received the ID: 3596537\n",
      "The job PhonoBulk_1_02 was saved and received the ID: 3596539\n",
      "The job supercell_phonon_0 was saved and received the ID: 3596542\n"
     ]
    }
   ],
   "source": [
    "# Loop the phonon calculation over all the volumes\n",
    "sc_bulk_rel = job_bulk_1.get_final_structure()\n",
    "bulk_free_energies = np.zeros((len(scales), len(temperatures)))\n",
    "\n",
    "for i, scale in enumerate(scales):\n",
    "    name_tail = \"_{}\".format(str(scale).replace(\".\", \"_\"))\n",
    "    \n",
    "    # Make a bulk job with the rescaled structure \n",
    "    # (already relaxed, by symmetry won't change, calc static will be enough)\n",
    "    job_bulk = pr_scales.create_job(pr.job_type.Lammps, \"Bulk\" + name_tail)\n",
    "    job_bulk.potential = pot\n",
    "    job_bulk.structure = scale_structure(sc_bulk_rel, scale)\n",
    "    job_bulk.calc_static()\n",
    "    job_bulk.run()\n",
    "    U = job_bulk.output.energy_tot[-1]\n",
    "    \n",
    "    # Use that job as a reference for a phonopy job\n",
    "    phono_bulk = make_phonopy_job(job_bulk, \"PhonoBulk\" + name_tail)\n",
    "    phono_bulk.run()\n",
    "    tp_bulk = phono_bulk.get_thermal_properties(temperatures=temperatures) \n",
    "    Fvib = tp_bulk.free_energies\n",
    "    \n",
    "    # Fill in the row of free energies for this volume\n",
    "    bulk_free_energies[i] = Fvib + U"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:49:08.549157Z",
     "start_time": "2019-09-04T10:49:08.546024Z"
    }
   },
   "outputs": [],
   "source": [
    "# The lattice constant is probably a more informative value than the 0K-relative strain\n",
    "latts = basis_rel.cell[0][0] * scales"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:49:08.802189Z",
     "start_time": "2019-09-04T10:49:08.551161Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x2b61a42bf278>"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# At each temperature, find the optimal volume by a simple quadratic fit\n",
    "# ...Wait, which order fit will be good enough? Let's just spot-check\n",
    "free_en = bulk_free_energies[:, -1]\n",
    "plt.plot(latts, free_en, color='b', label='data')\n",
    "\n",
    "# We'll plot the fit on a much denser mesh\n",
    "fit_deg = 4\n",
    "p = np.polyfit(latts, free_en, deg=fit_deg)\n",
    "dense_latts = np.linspace(np.amin(latts), np.amax(latts), 1000)\n",
    "#dense_latts = np.linspace(0, 10, 1000)\n",
    "plt.plot(dense_latts, np.polyval(p=p, x=dense_latts), color='r', label='fit')\n",
    "plt.xlabel('Lattice constant [$\\mathrm{\\AA}$]')\n",
    "plt.ylabel('Bulk free energy [eV/supercell]')\n",
    "plt.legend()\n",
    "# Ok, a fourth-order fit seems perfectly reasonable"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:49:08.821970Z",
     "start_time": "2019-09-04T10:49:08.804021Z"
    }
   },
   "outputs": [],
   "source": [
    "# Now find optimal temperatures\n",
    "best_latts = np.zeros(len(temperatures))\n",
    "best_latt_guess = basis_rel.cell[0][0]\n",
    "for i, T in enumerate(temperatures):\n",
    "    free_en = bulk_free_energies[:, i]\n",
    "    p = np.polyfit(latts, free_en, deg=fit_deg)\n",
    "    extrema = np.roots(np.polyder(p, m=1)).real  # Find where first-derivative is zero\n",
    "    best_latts[i] = extrema[np.argmin(np.abs(extrema - best_latt_guess))]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:49:08.827544Z",
     "start_time": "2019-09-04T10:49:08.823767Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4.045270475668763 \n",
      " [4.05946291 4.05949371 4.05987201 4.06083718 4.06226186 4.06396024\n",
      " 4.06579637 4.06768361 4.06956868 4.0714193  4.07321635 4.07494901\n",
      " 4.07661182 4.07820271 4.07972185 4.08117076 4.08255184 4.08386799\n",
      " 4.08512237 4.08631821 4.08745877 4.0885472  4.08958656 4.09057975\n",
      " 4.0915295  4.09243842 4.09330892 4.09414326 4.09494357 4.09571182\n",
      " 4.09644984 4.09715935]\n"
     ]
    }
   ],
   "source": [
    "# Check that they're resonable\n",
    "print(best_latt_guess, '\\n', best_latts)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:49:09.403215Z",
     "start_time": "2019-09-04T10:49:08.829230Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x2b61d9e8ee80>]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Let's look at the landscape\n",
    "fig, ax = plt.subplots()\n",
    "sns.heatmap(bulk_free_energies, ax=ax, cmap=\"coolwarm\",\n",
    "            xticklabels=['{:,.0f}'.format(T) for T in temperatures],\n",
    "            yticklabels=['{:,.2f}'.format(a) for a in latts])\n",
    "ax.set_xlabel(\"Temperature [K]\")\n",
    "ax.set_ylabel(\"Lattice constant [$\\mathrm{\\AA}$]\")\n",
    "\n",
    "# Overlaying the optimal path takes a couple changes of variables\n",
    "# since the heatmap is plotting integer cells\n",
    "\n",
    "\n",
    "ax.plot(scale_array(temperatures, new_range=len(temperatures)), \n",
    "        scale_array(best_latts, scaler=latts, new_range=len(latts)), \n",
    "        color='k')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Vacancies and diffusion\n",
    "\n",
    "Another common use of QHA is to calculate the pre-factor for migration in a diffusion event.\n",
    "\n",
    "In particular, the diffusion jump barrier looks like $\\omega_0 = \\nu_0^\\star \\exp(-H_\\mathrm{m} / k_\\mathrm{B} T)$, where $\\nu_0^\\star = \\prod_{i=1}^{3N-3} \\nu_i^\\mathrm{IS} / \\prod_{i=1}^{3N-4} \\nu_i^\\mathrm{TS}$, with IS and TS indicating the initial and transition states, respectively. Note that the transition state is missing a single frequency, which is from the instability of the transition state. It's either an imaginary mode, which I think means a negative frequency. Meanwhile, $H_\\mathrm{m}$ is the enthalpic barrier (difference between the initial and transition states) and $k_\\mathrm{B} T$ is the usual thermal energy term.\n",
    "\n",
    "Typically, these sorts of investigations use the nudged elastic band (NEB) to find the 0K transition state. You can do that with our new flexible jobs, but we'll save that for later. For now we'll just \"approximate\" the transition state with a simple linear interpolation."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-04T13:20:03.212626Z",
     "start_time": "2018-12-04T13:20:03.208808Z"
    }
   },
   "source": [
    "### Stable vacancy structures\n",
    "\n",
    "Let's start by generating and relaxing the initial and final states"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:49:09.408299Z",
     "start_time": "2019-09-04T10:49:09.405043Z"
    }
   },
   "outputs": [],
   "source": [
    "pr_vac = pr.create_group(\"Vacancies\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:49:09.420078Z",
     "start_time": "2019-09-04T10:49:09.409741Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0. 0. 0.]\n",
      "[2.02263524 2.02263524 0.        ]\n"
     ]
    }
   ],
   "source": [
    "# Find two adjacent sites\n",
    "print(job_bulk_1.structure.positions[0])\n",
    "print(job_bulk_1.structure.positions[1])\n",
    "# Yep, 1 and 2 will do"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:49:09.716448Z",
     "start_time": "2019-09-04T10:49:09.421499Z"
    }
   },
   "outputs": [],
   "source": [
    "job_vac_i = pr_vac.create_job(pr.job_type.Lammps, \"VacancyInitial\")\n",
    "job_vac_f = pr_vac.create_job(pr.job_type.Lammps, \"VacancyFinal\")\n",
    "\n",
    "job_vac_i.potential = pot\n",
    "job_vac_f.potential = pot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:49:09.817938Z",
     "start_time": "2019-09-04T10:49:09.790080Z"
    }
   },
   "outputs": [],
   "source": [
    "sc_vac_i = sc_bulk_rel.copy()\n",
    "sc_vac_i.pop(0)\n",
    "job_vac_i.structure = sc_vac_i\n",
    "\n",
    "sc_vac_f = sc_bulk_rel.copy()\n",
    "sc_vac_f.pop(1)\n",
    "job_vac_f.structure = sc_vac_f"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:49:12.794794Z",
     "start_time": "2019-09-04T10:49:09.819553Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The job VacancyInitial was saved and received the ID: 3596547\n",
      "The job VacancyFinal was saved and received the ID: 3596549\n"
     ]
    }
   ],
   "source": [
    "# Relax the new vacancy structures\n",
    "job_vac_i.calc_minimize(pressure=0.0)\n",
    "job_vac_i.run()\n",
    "\n",
    "job_vac_f.calc_minimize(pressure=0.0)\n",
    "job_vac_f.run()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "### DOS\n",
    "\n",
    "The PyIron implementation of phonopy makes it very easy to look at the DOS. Let's see what the effect is of introducing a vacancy, and confirm that our two vacancies are equivalent."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:49:14.899482Z",
     "start_time": "2019-09-04T10:49:12.796728Z"
    },
    "hidden": true
   },
   "outputs": [],
   "source": [
    "phon_vac_i = make_phonopy_job(job_vac_i, \"PhonoVacInitial\")\n",
    "phon_vac_f = make_phonopy_job(job_vac_f, \"PhonoVacFinal\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:51:43.690925Z",
     "start_time": "2019-09-04T10:49:14.932912Z"
    },
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The job PhonoVacInitial was saved and received the ID: 3596552\n",
      "The job supercell_phonon_0 was saved and received the ID: 3596554\n",
      "The job supercell_phonon_1 was saved and received the ID: 3596556\n",
      "The job supercell_phonon_2 was saved and received the ID: 3596559\n",
      "The job supercell_phonon_3 was saved and received the ID: 3596561\n",
      "The job supercell_phonon_4 was saved and received the ID: 3596564\n",
      "The job supercell_phonon_5 was saved and received the ID: 3596566\n",
      "The job supercell_phonon_6 was saved and received the ID: 3596569\n",
      "The job supercell_phonon_7 was saved and received the ID: 3596571\n",
      "The job supercell_phonon_8 was saved and received the ID: 3596573\n",
      "The job supercell_phonon_9 was saved and received the ID: 3596576\n",
      "The job supercell_phonon_10 was saved and received the ID: 3596578\n",
      "The job supercell_phonon_11 was saved and received the ID: 3596580\n",
      "The job supercell_phonon_12 was saved and received the ID: 3596582\n",
      "The job supercell_phonon_13 was saved and received the ID: 3596585\n",
      "The job supercell_phonon_14 was saved and received the ID: 3596587\n",
      "The job supercell_phonon_15 was saved and received the ID: 3596589\n",
      "The job supercell_phonon_16 was saved and received the ID: 3596592\n",
      "The job supercell_phonon_17 was saved and received the ID: 3596594\n",
      "The job supercell_phonon_18 was saved and received the ID: 3596597\n",
      "The job supercell_phonon_19 was saved and received the ID: 3596599\n",
      "The job supercell_phonon_20 was saved and received the ID: 3596601\n",
      "The job PhonoVacFinal was saved and received the ID: 3596613\n",
      "The job supercell_phonon_0 was saved and received the ID: 3596616\n",
      "The job supercell_phonon_1 was saved and received the ID: 3596618\n",
      "The job supercell_phonon_2 was saved and received the ID: 3596620\n",
      "The job supercell_phonon_3 was saved and received the ID: 3596623\n",
      "The job supercell_phonon_4 was saved and received the ID: 3596625\n",
      "The job supercell_phonon_5 was saved and received the ID: 3596628\n",
      "The job supercell_phonon_6 was saved and received the ID: 3596630\n",
      "The job supercell_phonon_7 was saved and received the ID: 3596632\n",
      "The job supercell_phonon_8 was saved and received the ID: 3596635\n",
      "The job supercell_phonon_9 was saved and received the ID: 3596637\n",
      "The job supercell_phonon_10 was saved and received the ID: 3596640\n",
      "The job supercell_phonon_11 was saved and received the ID: 3596642\n",
      "The job supercell_phonon_12 was saved and received the ID: 3596644\n",
      "The job supercell_phonon_13 was saved and received the ID: 3596646\n",
      "The job supercell_phonon_14 was saved and received the ID: 3596649\n",
      "The job supercell_phonon_15 was saved and received the ID: 3596651\n",
      "The job supercell_phonon_16 was saved and received the ID: 3596653\n",
      "The job supercell_phonon_17 was saved and received the ID: 3596655\n",
      "The job supercell_phonon_18 was saved and received the ID: 3596658\n",
      "The job supercell_phonon_19 was saved and received the ID: 3596659\n",
      "The job supercell_phonon_20 was saved and received the ID: 3596660\n"
     ]
    }
   ],
   "source": [
    "phon_vac_i.run()\n",
    "tp_vac_i = phon_vac_i.get_thermal_properties(temperatures=temperatures) \n",
    "\n",
    "phon_vac_f.run()\n",
    "tp_vac_f = phon_vac_i.get_thermal_properties(temperatures=temperatures) \n",
    "\n",
    "# Note that the vacancy structures spawn many more child processes\n",
    "# This is because the vacancy structure has lower symmetry"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:51:48.255272Z",
     "start_time": "2019-09-04T10:51:43.734203Z"
    },
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x2b61da20bcc0>"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAEWCAYAAACOv5f1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdeXxU1fnH8c+Tfd9DCAkhQIAQ2Q2LBRR3rVvritUWta6tC1ZrtWrVVq2t2p92UWu1ipa6FK1ra8VdrAJhlzUgAZKQfd/IMuf3x72hEQMJyUxuZuZ5v155zdw7d+58J4Fn7px77jlijEEppZR/CXA6gFJKqYGnxV8ppfyQFn+llPJDWvyVUsoPafFXSik/pMVfKaX8kBZ/5TYi8pGIXO50DqVUz7T4q8MiIgUi0iwiDSJSKiLPiEiU07l6S0TuFpE2Eam3f7aJyB9FJPWA7eJE5HERKRGRJhHZICKXHrDNHBH5r4jUikiViHwmItM9mD1TRIz9u+/6c4GnXlP5Li3+qi/OMMZEAdOA6cAdDuc5XC8ZY6KBBOC7wFBgVecHgIiEAO8BI4CjgFjgp8ADIvITe5sY4C3gD/Z+0oB7gH0DkD/OGBPV5ecld7+AiAS6e59qcNHir/rMGFME/BuY0GX1CPsIuF5E3hWRpM4HRORMEdkoIjV2E9H4Lo8ViMjNIrLePpJ+SUTCujx+hYhst4+w3xCRYV0eMyJytYjki0i1iPxJRKQX+duMMRuBC4By4Cb7oe8DGcB5xpid9nbvANcDv7QL/1h7Hy8YYzqMMc3GmHeNMesPfB0RGWZ/W0rosm6qiFSISLCIZInIx/b7rhCRPhVzEXnWfu9v27//5SIyusvj2SKy1P4dbhWR8w947uMi8i8RaQSOFZFEEXlTROpEZKWI3Csiy+zt/yQiDx/w+m+KyMK+ZFcDT4u/6jMRGQ58G1jTZfX3gEuBIUAIcLO97VjgBWAhkAz8C3jTPsrudD5wCjASmARcYj/3OODX9uOpwC7gxQPinI71LWSyvd3JvX0fxpgO4HVgrr3qRODfxpjGAzZ9BQjD+jawDegQkUUicqqIxB9i/8XA58A5XVZ/D1hijGkDfgW8C8QD6VjfJvrqQqxvIPHAduA+ABGJBJYCf8f621wIPCYiRxyQ6T4gGlgG/AloxPpmtMD+6bQIuFBEAuz9JwHHY/2NlRfQ4q/64jURqcEqEB8D93d57BljzDZjTDPwMjDFXn8B8LYxZqld8B4CwoFvdXnu740xxcaYKuDNLs+9CPirMWa1MWYfcBtwlIhkdnnuA8aYGmPMbuDDLs/trWKs5huAJGDvgRsYY9qBCiDJGFMHzAEM8Beg3P5GknKQ/f8dq+BifyuZb68DaMNqYhpmjGkxxizrIWuF/e2p82d8l8deNcassLMu5n+/h9OBAmPMM8aYdmPMaqwPs3O7PPd1Y8xnxhiXnekc4C5jTJMxZhNWwe/8XawAarEKPvb7+cgYU9pDdjVIaPFXffEdY0ycMWaEMeZHdqHvVNLlfhPQeTJ4GNYROwB2gdmD1VZ+uM9tACp7+dzeSgOq7PsVWN8wvkZEgrA+GCrsHJuNMZcYY9Kxmr6GAY8cZP9LsD6whgFHY31ofGo/dgsgwAq7WeyyHrIm2b//zp/NXR472O9hBDCz64cG1ofq0C7b7+lyPxkIOmBd1/tgfRhcbN+/GHi+h9xqEAlyOoDyG8XAxM4F++h3OFDUy+eO6PLcSCCxl8/tkd10cQbWSV7s2/tFJPKApp9zsE7ofnHgPowxW0TkWeCq7l7DGFMjIu9iNUmNB14w9pC6xpgS4Ao7yxzgPRH5xBiz3R3vz7YH+NgYc+Ihtuk6xG850I7VDLXNXjf8gO3/BnwpIpOx3tNrbsqqBoAe+auB8jJwmogcLyLBWCdX9wH/7cVz/w5cKiJTRCQUq5lpuTGmoD+B7JOt47HaqYcCv7Mfeh4oBP5hd68MFpGTgd8Ddxtjau2TpzeJSLq9r+FYzTrf+GA44H38AOtDpLPJBxE5r3M/QDVWEe7oz3vrxlvAWBH5vv1+gkVk+gFNRvvZ50FeBe4WkQgRybazd92mEFiJ9ft65YBvgGqQ0+KvBoQxZitW08AfsJpNzsDqMtrai+e+D9yJ1Ua9FxiN1cbcVxeISANQA7yB1YR0pH1iFvu8wglYR8vLgTqsD4bbjTEP2vuoB2YCy+3eMV8AX/K/HkPdeQMYA5QaY9Z1WT/d3k+Dvc0Nxpidh9hPjXy9n/9PenrDxph64CSs31sxVvPQb4DQQzztWqxuriVYBf4FvtmVdRHWNzpt8vEyopO5KKV6Q0R+Aww1xizosu5orOafTPs8jvISeuSvlOqW3bQ1SSwzgB8C/+zyeDBwA/CUFn7vo8VfKXUw0Vjt/o1Y52wexroeAvtcQQ1Wr6iD9XBSg5g2+yillB/SI3+llPJDXtHPPykpyWRmZjodQymlvMqqVasqjDHJ3T3mFcU/MzOTvLw8p2MopZRXEZFdB3tMm32UUsoPafFXSik/pMVfKaX8kFe0+Xenra2NwsJCWlpanI4yYMLCwkhPTyc4ONjpKEopL+e1xb+wsJDo6GgyMzPpxaRNXs8YQ2VlJYWFhYwcOdLpOEopL+e1zT4tLS0kJib6ReEHEBESExP96puOUspzvLb4A35T+Dv52/tVSnmOVxd/pZTqqroannwSGg+cfVl9gxb/figoKGDChAm93v7ZZ5/l2muvBeCSSy5hyZIlnoqmlF964AG46iqYPBnWr3c6zeCmxV8p5RM6OuBvf4Mjj7S+Adxzj9OJBjct/v3U3t7OggULmDRpEueeey5NTU1kZmZSUVEBQF5eHvPmzTvkPu68804uueQSXC4dEl2pvvrgAyguhltvhWOP1SP/nnhtV8+uFi6EtWvdu88pU+CRXoxSvnXrVp5++mlmz57NZZddxmOPPXZYr3PLLbdQW1vLM888oyd0leqH556DuDg4/XTYuBFefdVq+4+MdDrZ4KRH/v00fPhwZs+eDcDFF1/MsmXLev3cX/3qV9TU1PDnP/9ZC79S/dDeDq+/DuecA2FhMHEiGAObNzudbPDyiSP/3hyhe8qBRVtECAoK2t+Ec6h++dOnT2fVqlVUVVWRkJDg0ZxK+bING6C+Ho4/3lqeOPF/63Nzncs1mOmRfz/t3r2bzz//HIAXXniBOXPmkJmZyapVqwB45ZVXDvrcU045hVtvvZXTTjuN+vr6AcmrlC/q/MI9Z451O2pIFeHhVvFX3dPi30/jx49n0aJFTJo0iaqqKq655hruuusubrjhBubOnUtgYOAhn3/eeedxxRVXcOaZZ9Lc3DxAqZXyLcuWQUYGDB8O/N80ApckcuG0ZVr8D8Er5vDNzc01B07msnnzZsaPH+9QIuf46/tW6mCMgfR0mDcPFh/3PQh/AYDSNaOZ/Px2SkqczeckEVlljOm24UuP/JVSXq2gwOriedL0Ygh8AYqSoPRIhkzewazgf1Je7nTCwUmLv1LKq3W29387+GEIAab8Ai58CVrh3hPuZPduR+MNWlr8lVJebcUKiIqCpKZXoUHgmCtg6Gg6ymPJGLGLvXudTjg4afFXSnm1vDyYNa0JiS+AuiwICQPAZTKIHt5AyV69cr47WvyVUl6rrc26uv/6nD9CBDDqvP2PBSZORMIh8KvPnQs4iGnxV0p5rY0boaUFvpX0D2gDTrpp/2OBo6xO/0Mq/uNQusFNi79Symt19gCPi9kGFVEQ1eVK+cmnAZBqVjiQbPDT4j/IPPHEEzz33HNOx1DKK+TlwdD4JgKS60DGfv3BpAw6KgMZGrPFmXCDnE+M7eNLrr76aqcjKOU1Vq6E62e/ioQAw47+xuMNZQkkDCkd+GBewDeKvwNjOv/sZz9jxIgR/OhHPwLg7rvvRkT45JNPqK6upq2tjXvvvZezzjoLgOeee46HHnoIEWHSpEk8//zz3e737rvvJioqiptvvtm970cpH9PSYo3d88zsN6wV087/xjY1jaPIGLMc09KEhEUMcMLBTZt9+mj+/Pm89NJL+5dffvllLr30Uv75z3+yevVqPvzwQ2666SaMMWzcuJH77ruPDz74gHXr1vHoo486mFwp37Bhg9XbZ1TCKqgLgKyZ39imNnAiEgQNa7THz4E8euQvIjcClwMG2ABcitUh6yUgEygAzjfGVPfrhRwY03nq1KmUlZVRXFxMeXk58fHxpKamcuONN/LJJ58QEBBAUVERpaWlfPDBB5x77rkkJSUB6PDNSrlB58neyIQ9UJ8CAd88lu2IzwagMX8D0UcdP5DxBj2PFX8RSQOuB3KMMc0i8jIwH8gB3jfGPCAitwK3Aj/zVA5POvfcc1myZAklJSXMnz+fxYsXU15ezqpVqwgODiYzM5OWlhaMMTpZi1JutnIlTErbjSS1QfWEbreRdGt9+96tAxnNK3i62ScICBeRIKwj/mLgLGCR/fgi4DsezuAx8+fP58UXX2TJkiWce+651NbWMmTIEIKDg/nwww/ZtWsXAMcffzwvv/wylZWVAFRVVTkZWymfkJcHl0//t7UwbFa320TkTAUgoH7nQMXyGh4r/saYIuAhYDewF6g1xrwLpBhj9trb7AWGdPd8EblSRPJEJK98kA7Ld8QRR1BfX09aWhqpqalcdNFF5OXlkZuby+LFi8nOzt6/3e23384xxxzD5MmT+clPfuJwcqW8W1OTdYHX0RmfWCtyTu52uyFZQ3A1CMHtxQOYzjt4stknHusofyRQA/xDRC7u7fONMU8CT4I1nr9HQrrBhi6zRSQlJe2f1etACxYsYMGCBT3u7+6773ZXNKV81po14HJBZtwGaAbGHNXtdrGxsK86hNDgwXkA6SRPNvucAOw0xpQbY9qAV4FvAaUikgpg35Z5MINSygfZs6QSHbkHaqK6PdkLIAKNNdGERNQNYDrv4MnivxuYJSIRYp3tPB7YDLwBdB4CLwBe92CGQeu+++5jypQpX/u57777nI6llFdYtw6Sk1wExNWCST/ktvUNiYTEtgxQMu/hsWYfY8xyEVkCrAbagTVYzThRwMsi8kOsD4jzDr4X33X77bdz++23Ox1DKa+0YQOcOeVLiDJYHQgPrq4lFYnZCi0NEBY1MAG9gEf7+Rtj7gLuOmD1PqxvAUopddhcLutk7x0/eMdakTH7kNvXmhFIALBrHYw79Lb+RK/wVUp5la++snr7TI7/r7Vi4qmH3L4hdAwApnC9p6N5FS3+Sh0Gl8uaNvC552Cnw13HjbGGN3D52URV6+0aPiRiqzVtY9r4Q27fFGtd6NVWpKN7dqXFX6le2rcPcnNh5kxYsABGjYIjj4QnnoC6AepMUlAAjz8OZ5wB0dEQEgKZmf+bxNwfbNhg9eIJCy2F+sget29Psy70aiv/ytPRvIoW/0GmvLycmTNnMnXqVD799FOn46guHnnE6l/+6KPWILK/+x20t8M110BqKlx4ISxeDPaF3G5RWgpLlsD118P48TByJPzoR1ab9/cvdvHLu9sJDYV58+Df/3bf6w5mGzZAVhZIRB24knvcPnJ4OqYZTHPRAKTzHr4xpLMPef/998nOzmbRokU9b6wGTEkJ3HefdcR9/fXWusmTrdHEV66Ep56C11+HF1+0upxPngzTplk/48ZBWpr1Ex399f0aY7Vfl5fD7t3Wz9atVtPGunVgjxBCRATMng1XXglnzi5k1MfzkOidEGj46T23csSd93P//XDqoZu/fcKGDTBzQg3EdoArs8ftk1MCaN0WQqBLL/TqyjeK/6qFUO3m8fzjp8CRAzue/9q1a7nllltobm5mypQpfP7554SHh7v3fak++ctfoKEBHnro6+ulcg8zNtzCjKOCeWLhleQ1zOHtt+GLL+C11+Dpp7++fWAghIZazTUdHdY+MyN2cGzqh9S1xrCiYiZF+0YwbhwcdRT8+Mdw9NHWh0hwMFCwFv75LRjaDCWjILCEsMhf89rZJUx66K9s2AATJw7Yr2XAtbbC9u1wx2nLrHaLxEO39wMkJ0NzbTgREfWeD+hFfKP4O2D+/PksXLhwf/F/+eWXeeedd7jxxhuJiYmhoqKCWbNmceaZZ7Jp0ybuu+8+PvvsM5KSkg46sNuUKVP45S9/SV5eHn/84x8H8u2oHnz0kXU0P7brTIGLfwQtj4P9+Ryw+nlm1J7EjLv+DQEBGAN79li9U4qKrJ+6OjDNDcxofJxpES+SOvxLglJa9+/StAMlKcikW+CUA8aA2rka3pwFsW0Qdy98/3ZoqII/j2RC1rOkRT3A448P4bHHPP3bcE5BgXWCe3KMPYxKem6Pz0lKgpraGKITSjwbzsv4RvE/xBG6p+h4/v5j3z74/HOryWW/P38Hol+H6lgY93uISoKlV0Pau/BwOlz6BZKUQUYGZGQAWz+DpkdAPoFRZRAGtAFliVAzA1Jzoa0ZKf0QYtZA1U3w0C9h0j1wzBWw9FEo+AVEtcOIx+D4a6wcUQkw9bdIydW89b1LOfpvb/P730OQb/zP/obt263btJAvrTtjvzl144Gio6GgLp7h0Xs8mMz7+Og/kYGh4/n7h5UrobkZjjnGXvHcFVbhL0qDH2+CiBhr/aQCeOpcSPknvDga5FgIDIX6zyG1EiKBliBr7PmRZ8JpN0BsN4PaNtbA4h9C1GtQsRBeWWitN8Ew6i8w7/Kvb3/cVfDg7Uye9m8Cn6li8+YEn2362bHDuo0J3AGNAkNH9/gcEahuTkEisH63kXGeDekltLdPP+h4/v7h44+t27lzgfceA56CogS4ftv/Cj9YZ3qvfBWG/QFaQyB+KcS8BWG1UHU0THoPrmuDmzbA2fd1X/jBKk5XvgIXl0PbpVB1ArR8D35Y8c3C3yn7RiTasHDCI6xc6c53P7hs3w5RURAUsBfqez8nb23bMOtO4UYPJfM+euTfD92N53/GGWeQm5vLlClTuh3PPzAwkKlTp/Lss886G1712scfWydRk2JaYONPIDAILl0DoQcpPidca/0UbgSXgYzuZ5nqUVQCLPhr77Y9/jrMi3cwP/cf/N+KX3LZZX17ycFuxw4YPRokvA6a03r9vBrJtO6UbNEhHmxa/PvJ3eP5X3LJJVxyySXuiqf6yeWy2vt/8ANg0cWQvA9CboWkjJ6fnH6Ex/PtFxGDVKaRNXkbK5924atf6nfsgKnjGyCuHVy9+BvYGsJGWXcq9UKvTr75L0QpNykutrpjTsluAPOq1dxz9iAdejvlVALjXeTUvkCLD45g3NFh9Zw6enieVblis3r93KYYu0tozS7PhPNCWvwdouP5e4f8fOv22PZHrOGDs3580IlDHHfcQowLLpvyFGvdfNnLYFBUZPXznxRnv7nknvv4d2pPsbbtaNjriWheyaubfby5F01fxvM3ZtDOZumzOot/RstiaAHOGsTzL6cfgSkLZ/K4dfxtBczqfk5zr9XZzXNEhD1AW/qkXj83PjUKV73Q0VRGoAeyeaNBegjTs7CwMCorK/2mIBpjqKysJCwszOkofiU/HyJDWwlO2AqVwwd9N0FxZRI/qpptm9udjuJ2nd08EwLtO6Om9/q5ycnQWhsCHdrTrpPXHvmnp6dTWFhIebn/jNcRFhZGevqhp6xT7pWfDz+b9SQSbSDmu07H6ZEkzYCQzUTvWgr41kA/BQXW8BhhFFlDOUf1/mLJ5GRoXhVOdIwO8dDJa4t/cHAwI0eOdDqG8nH5+XD/3BehA/j2T52O07Oc02H7InJcb+Brxb+42Bo9VUwFNB7eN+DkZKitjSU2RUf27OS1zT5KeZrLZTU1ZKRsg8owSPSCb11TTsfsg4lDPve5Hj/FxTBsGBBSB+2xh/XcpCSoqk1AonyvOayvtPgrdRB79ljj+kQOrYTOK0QHu5Aw2kqjGTVqB1/5WJf2/cU/ah8EHOTq6INISIDS2hQkDKgt80g+b6PFX6mDyM+HCbHrkVgXxPS+Z4nT2trHEJ3ZwI5NTU5HcaviYsgZstsaRTVi+GE9NyAAKvfZVwQXbXJ/OC+kxV+pg8jPh+9kvmYtjJznaJbDEThsFhICHWt8Z2qvlhaoqoIpcausFXE9D+h2oKrOiV9KtrovmBfT4q/UQeTnwzEj7clxpw3+nj6dwo6whh+NLvvE4STus9e+Nisr3J69fejhD51RHWR/YFT5WHtYH2nxV+og8vNhwqhNUBXUu7F8BosJJ2FckGzWOJ3EbYqLrduU4G3WnYyph72Pugj7iuDa3W5K5d20+Ct1EPn5kDS8FJpTnI5yeCLj6CgPJjnGd45wO4t/bECB1e02Y/Jh76M1KRvjApp0iAfQ4q9Ut9rboWZPBUFD2iF8nNNxDltzdRIJqeU+092zs/iHBZRCfSAEhxz2PuJTwjD1gtmnvX1Ai79S3dq9G2YlfGotJA7g0Mxu0tQxkpChreza2uB0FLcoKrImvg8IqIGWvg1xkpwMrXUhuNpr3JzOO2nxV6ob+fkwPcWeEiv9SGfD9EFH/BQkEBqXL3U6ilt09vGX4EboiO7TPpKTobEmEgJ1iAfQ4q9Ut/LzYcIQe8q/MXOcDdMHoeOtic2DCnyjx8/+C7wi9oHE92kfyclQVxuDhPlIW1g/afFXqhv5+ZCV+hWmqXeThA828XNPxLggqnm101HcorgYMlObrDkVQvt2Aj4pCSpqE60hHlwuNyf0Plr8lepGfj4MG7oXqQt3OkqfBMQk0F4WTGzoDqejuEVxMUxNtr+JRfZtqI3kZHuIh1CgtsR94byUFn+lupGfD9FJddCR6HSUPquvSCAqocLpGP3W1AT19TA22h6WIS6zT/tJSoLCWntYiMKN7gnnxbT4K3WAtjYoKmghMLENQrxgJM+DqG3MICRlH7S1Oh2lXyrsz6/0EPsCr+SxfdpPSAiUtIywFkrz3ZDMu2nxV+oABQUwPf4LJAiI7VuhGQzqgiYgwdC4dpnTUfqls/gnBRdYd4bl9H1fMsa6U+UbzWH94dHiLyJxIrJERLaIyGYROUpEEkRkqYjk27d9O3WvlIfk58OslC+shdQpzobph9YUaxLfhjUfO5ykfzon64sJKAIXkN736y5qI7KtO3V7+h/My3n6yP9R4B1jTDYwGdgM3Aq8b4wZA7xvLys1aOTnw6QUewCx0Uc5G6YfgicfD4ApXuVwkv7pPPIPCyiDRoHQiD7vqy1prA7xYPNY8ReRGOBo4GkAY0yrMaYGOAtYZG+2CPiOpzIo1Rf5+ZCdmo9pA0Z63wVendKmjaajVghp8+727c4j/+DAamgO7de+hgwLwVUXAK3efyK8vzx55D8KKAeeEZE1IvKUiEQCKcaYvQD27eFNyaOUh+Xnw/DUIqQ2BAK9dpprkpKgYW8MERHefZRbUWFN3C7B9dAW2a99DRsG+2pCcbmq3JTOe3my+AcB04DHjTFTgUYOo4lHRK4UkTwRySvv/OhXagDk50NcUjXsi3M6Sr+IQEVFKiFJ3j2+T3k5JCZiX5nbv79JairUV0dDkA7x4MniXwgUGmOW28tLsD4MSkUkFcC+7XaIPWPMk8aYXGNMbnJysgdjKvU/ra2wq8BFcFILBKY6HaffypqyCYg2UOy9s1dVVEBKUjtEdUBw/2pBaipUVCUikTrEg8eKvzGmBNgjIp3j4R4PbALeABbY6xYAr3sqg1KH66uvYHz0Jmui7yjvG9bhQJWh1jkLs+l9h5P0XUUFTE7Jt9oSIvp2dW+n1FQoqUpFog001bknoJfydG+f64DFIrIemALcDzwAnCgi+cCJ9rJSg0J+Pnwr5TNrYchEZ8O4QWPaPAD2bf/C2SD9UF4Ok5Lsq3tjR/RrX8OGQUGVvY9da/uZzLt59GyWMWYtkNvNQ8d78nWV6qv8fJiWYk9/mDnD2TBuEHrELEw9dFRscjpKn1VUwJgY++rexKx+7SshAXbW2Rd6Fa0He/RTf6RX+CrVxZYtMDFti3Ux0ZhvOR2n30ZmBdGyN4xAvHPeWpcLKishLcKeknJo/2ZVE4Fi7IvEyrf1M5130+KvVBcbN8LIYbuhLhAivbu3D0BmJpQVDSE4utrpKH1SXW19ACSH2VfkDu9/U1xFuH3Vdo3vzHHcF1r8lbIZYxX/hMRyaIpyOo5bxMbC7vJRBCS2Q6P3TV/Y2cs7NrQEmoHY/l8WFJSSjmkGmov7vS9vpsVfKVtxMdTWQmhiI7507eGe5klIAOCFPX72D+0QUgmNwW7ZZ+qwANqqQ6DDvydy1+KvlG3TJhgaVozEGAjPdDqO2xSHzbbu7PC+0T07j/xDQuqgte9j+nSVmgr1VZGYgFq37M9bafFXyrZxIxw79ENrIdn7u3l2qk8/DuMCV/k6p6Mcts4j/4DwZjCxbtlnaipUV8VDWLNb9uettPgrZdu4EY4dafeHH+n9PX06pWUn0V4RREeD941hv39kl6g2CExyyz7T0qC0aihEd3j9RDf9ocVfKdvGjZCb+aXVzXP8sU7HcZucHKgqSiAgtNTpKIetogJGxRdbV1yH9W3i9gNlZMCe6uHWZD1F3nv9Q39p8VcKq6fPpk2QkbITagMhKsHpSG4zfjxs35VFQNI+rxvSoLwcZmdssBZiMtyyz4wM2F5lD92xe41b9umNtPgrBezaZfX0iYkvhybv79/fVWIifFkxwzrSXfe203EOS0UFTErZYi0kjHLLPqOiYFvTNGuhyH+HeNDirxSQlwfgIiipCQLSnI7jdjtCTrHu5HtXd8+KChgTb5+rSOnf1b1dFUfaPaCqvXe00/7S4q8UVvE/MnG91bYc472Tth9My6hjMS1gKlY7HeWwlJdDWox9dW/aBLftNyp9KK5agaZdbtunt9HirxSwahVcOO0ja2GY907deDDZE0JoKIzE1b7T6SiHpaICkiOLoQ0YMtJt+x0xAprKIwDvOwnuLlr8ld8zxjrynz0yz1qRNdfZQB6QkwN7dg0nIK7WGizHCzQ3Q2MjxEaUQ0MgBLivXGVkQEVZEibUf2f00uKv/N5XX0FNDWQlboZWIGum05HcLicH1u+ejEQZ2LnK6Ti90nmBV3hENbS45+reTiNGQGFZOsS1Q6t/zuqlxV/5vTz7gD8udgdURnn1pO0Hk5wMy6adCKkAACAASURBVCtPsBZW/8PZML3UeYFXcFQjuNzbAysjA/LLspBAYMcKt+7bW2jxV35vxQqIDmshcEgtiPdP3dgdEagYPR+zD8ye95yO0yvWkb8LiWmDIPcOtDdiBKwvn2Qt7Fx+6I19lBZ/5feWLYPr5r6NhAIpvjOsw4GOOjaKmh1xGOMd3RvLy2Fk5E7r7xKR7tZ9JyfDmmq7ea/0S7fu21to8Vd+rbERVq+Gs7PftFZMPMvZQB40bx5s2DIRSWmC6sE/ln1FBUxJsC/CinPPBV6dAgKgLGo6ph2oy3frvr3FYRV/EQkWkaki4juDnSu/9sUX0N4OYxOXQ5PAEb47vfT48fBx4betsf0/W+R0nB6Vl8OEhI3WwpBst+8/PTOE9sogaC10+769wSGLv4g8ISJH2PdjgXXAc8AaEblwAPIp5VHLllnt4VExu6A63idP9nYSgV3pl2A6wOwY/MM8VFTAhNTt1sLwyW7f/+jRUFsaB0EVbt+3N+jpyH+uMcb+6OVSYJsxZiJwJHCLR5MpNQA+/RSOnlqBJDVDyHin43jczJOH0lgQiat18I9pU1EBI5N3WaOsumHu3gONHg27i4Zj4pqho93t+x/seir+XQe7PhF4DcAYU+KxREoNkLY2+PxzuDP3NxAIjPHd9v5OF10Ey1YdS2BaI6x63ek4h1ReDkPj90J9AIS6t58/QFYWbCoeb51Q3rHS7fsf7Hoq/jUicrqITAVmA+8AiEgQEO7pcEp50vLl0NQERw17CeoFTrjO6UgeFxEBO3J+i2mH5nfucTrOIVVUQGxsFTR7ptSMHg0rimdYC9s+8shrDGY9Ff+rgGuBZ4GFXY74jwcGf6OhUofw7rswJKyM8Iw90JADIWFORxoQF948nqLV6YQmr6Vs1+Ad37+8HMJjGqAjxiP7HzUKPii2T/AX53nkNQazQxZ/Y8w2Y8wpxpjJxphnu6z/jzHmJo+nU8qDli6FR07+tfW1f+LlTscZMAkJ0DjiOgKiDA2/mc6zf22nqcnpVF/nckFlJQTF7YOAZI+8RmQkVIbnYBoE6rd45DUGsx67NojIqcCtwBGAATYBvzHG/MvD2ZTymJoa68reM+9cDLUBcN6PnI40oMbdcDO197/FqDmfkpwfz+4b0gkODSU8KpqY9NFEjToCho6DiATInAJhUQOar7IShoQUIxFAq+fmVxidFUBzaSQR4YP/ugd3O2TxF5ErsJp+bgE6vxflAg+ISLox5kkP51PKIz78EE4Z+haRY8uh6jgIDnE60sAKCCD2jk8wT3yHiMiljD1yqzXOTZhBApdBDdYPYFaClEdA8kVw/iMeOfl6oJISyE3sHHTJfUM5HygrC0r2pjJqkvdNbt9fPR353wjMMcZUdVn3gf1tYBmgxV95pf/8Bx469RZMG8h3/+h0HMfI1a8RaN83BrZtbGHNK3lUrs6jo3wn0SG1TM7czqSJeQQF/gX++CJ89wMYlevRXHv3wqyhX1gL6Z57rdGjYfOKLEbNyYfyXZA8wmOvNdj0dMJXDij8ABhjKj2URymPMwY2vLeD7DmbkfJsSPP9/v29IQLjJoQx/645/Pj1hfzgX4/SeuGzXL1pGcE3N/Hkk9dg4usx786EvH96NEtJCUxKWW8tZM/z2OuMHg2riuzJezYu9djrDEY9Ff86EfnGpXX2Ov+dBUF5tXXr4NrMO5AQYM7dTscZtOLi4KqrrHMja9cG8En6Y3z3rtdwtYNZdQ6NSxd77LVLSmD00B3WyVg3zuB1oDFj4JPio62F3V947HUGo56K/03AGyJyt4icYff5vwd4HfiJ5+Mp5X5vvQWnz30LUxYKM85zOo5XmDwZ/vY3ePijs/hd3lI6WgKIKLiYT+99yiMTg+3dC6lDS5H6SPfvvItx4+DT8rnWAG9V/jW6Z09dPZcBM+3tLgEus+/Psh9TyuuUvLeU6DENSMhxbp0a0B+MHg0/ffY4doz+lPaGYOakXsEfzniU3bvd+zolJRA9tA5cnunm2SkmBpKGhtFeFgpt/jWZe4//8o0xJcaYXwBXA1cZY+7U4R2UtyopgXMT78O4gJMH9xWug9m4048i6DsrcNWGcv25C1l03n289pr79l+/t4qgxA4Iy3TfTg8iOxuqyxIh1L9OZfY0qqfYTT7lwBZgq4iUi8gvBiaeUu71z3/CzOnLcRXFwujpTsfxajJyCoEXrMFUh3HHj+7gy1/dzo03QkdH//c9ovlj607iEf3fWQ+ys2HHnpGY+DZoafD46w0WPR35L8Qa02eGMSbRGJOA1Qw0W0Ru7M0LiEigiKwRkbfs5QQRWSoi+fZtfL/egVKHYdNrnxGe0UJA7DFOR/ENaeMJuHgTVEZy+4338+Pm0TxxwZ9pKinr127HBNsnXzM8/wGdnQ1r90y0rnPY/JHHX2+w6Kn4/wC40Bizs3OFMeYr4GL7sd64AdjcZflW4H1jzBjgfXtZKY+rqIC55lEA5Fv+dUWvRw0ZiVyWj1TMZPSsr/jx2VcT/l4K5tFQePrwp/1oboasOPvk6zjPf0hnZ8N/i4+yFnZ86vHXGyx6Kv7BxphvzHRgjCkHgnvauYikA6cBT3VZfRbQOY3QIuA7vYuqVP+8/jocO/VDXBXBMOlkp+P4lrhUWPgFcsKXbNxxG5+8dgxNtaEQ/iL8fi6H0yXI6ub5FaZeBuSiq+xseG/vCdZC6RqPv95gcTjj+R/OY50ewRoaoutfPsUYsxfAvu12SkgRuVJE8kQkr7y8vBcvpdShvfNyGUnjK5D2SU5H8V3pR3DEnfdTev5HxN9dQeHKsZC0DF6/u9e7KCmBjMzdtFfFei5nF2lpUB84DFd1ADT5zzAPPRX/ySJS181PPXDIqXVE5HSgzBizqi/BjDFPGmNyjTG5ycme7e6lfF9xMcyseRAJAcm5yOk4Pu/88+HRP4Uw5g9raC8Lhl2/hbbeHC9C+c4qIjKaaDUDc+V1QIDV37+hNA4C/acjY0/9/AONMTHd/EQbY3pq9pkNnCkiBcCLwHEi8jegVERSAezb/p0ZUqoXXnwRzsn9h9WUcNw1TsfxC9dcA9dcH8EfX7oGhuyDF6/t1fNitryEBIFJm+fZgF1kZ0PR3jSIbTqsJipv5rErXIwxtxlj0o0xmcB84ANjzMXAG8ACe7MFWFcLK+VRry6uI3PqLqR+jN9M2jIY/Pa38Hb4wzQVhOOqerZXc+Wm1FmjxYcfPd/D6f4nOxvW78q25icsWD1gr+skJy5vfAA4UUTyseYFfsCBDMqPbNwIJ7h+Z40NP1abfAZSUBA8tziIvy29nIDkNtpfuavH5wwJW0t7eRCBIwfu3Ex2NqwommktbPlgwF7XSQNS/I0xHxljTrfvVxpjjjfGjLFvvzFqqFLutHgxXDRzMaYZOGGh03H8TmoqpF77W9orAmnP73n47Li0vVQVpg5Asv/JzoYPio+1For8YzJ3HdhE+TSXC5a/spGsWduR6myI8Mx8sOrQzjgnjDXrzyBsZB1lf//DQbdz5a8kMLGDkuYjBzCdNbrnupopmCagbuuAvrZTtPgrn7ZsGdw18Rpr2qITf+d0HL+WfstfaK8MJGbXzzDt3bf9t7xpNQsVDvvhQEYjLAxGjgpgX1kkmMIBfW2naPFXPu3VZ8uYc+IyTPFQmHyq03H8WurYJL7ccxVhI5op+s0V39ygo52woKXUbI4lcvbpA54vOxvKSoZCZO2Av7YTtPgrn1VbC9cEHU1AtCFgxq+cjqOA8ff8gfr8aNKGPYvrPwc0/7zzEAFJ7Tz//vfJzh74bNnZsGV3FsS6oMLNY1QPQlr8lc/a/esfMW7eVup3HgXzLnc6jgJCwwP4ZOjntFaEIEXXw1PzYV8T7FgJ2+7BVS88mH8fQ7q97t+zsrNhVeFUa2HT+wMfYIBp8Vc+ySz5ORNyHqd+WwxRN/tH1z1vceoVR3DZq59RtzMOIl6CFyLh4xkQ28Jz7/yC9DExiAx8ruxs+LhzSseC/w58gAGmxV/5njd+CU2/pqEgkjfi1iOhelHXYBIQAJf+Kpe4eyv5bN09UH0kVI2BKa/z8+V3O9LkAzB+PHxcdozfTOkY5HQApdzqv4uh4i5ay8M58vdbWLUz3elEqhsnnAAnnRTAmU/9gh07fkFcHOzZY83dO35ghvT5hqQkiE6IoL08hGCX70/pqEf+ync0VMHqSzDNgRzzf8s47tx0oqOdDqUO5je/gaoq6xbgT3+yvhWcf75zmXJyoMZPpnTU4q98xzPnQkI7nxb/luWl07jqKqcDqUOZMgUuuggeeQRWrYInn4TvfhdGeH4I/4PKybGndIxrtU5E+zAt/so3bP0Moj/EFA7n8n/8hBkzYOpUp0Opntx7LwQHQ24uVFfDQodH3xg/3p7SMQjY5NsdBbT4K9/w9nUQAMuSXiI/H27s1QzTymmZmbB5M/zkJ9YQ0LNnO5snJwc+95MpHfWEr/J+NSUQuwZKR/CLfx3F8OFwzjlOh1K9lZYGDz/sdApLTg68W3yiteDjUzrqkb/yfksWQjjsSrmTjz6C66+3mhKUOlxDh0JLmH9M6ahH/sq7uVzQ+BrURXLn2h8SFQWX68W8qo9ErKP/hpI4YuJLnY7jUXrkr7zbZ89D8j6aQs/mxRfhsssgLs7pUMqbjR8Pe4rTILbRp6d01OKvvNuKh6EV/lBwL+3tcMMNTgdS3i4nBzbszvH5KR21+Cvv1VQHMV/SUZrBr/+Swdlnw6hRTodS3i4nB1YWT7cWfHhKRy3+ynu9fS9EGj4tu4LaWrjjDqcDKV+Qk+MfUzrqCV/lvQqex0QF8L3nbub0060rRpXqr+HDIb/VmtJRfHhKRz3yV96paDOklFBSMI29FWHcfrvTgZSvEIHxOQG0lPr2lI5a/JV3evt2CIKf/+vnnHACzJrldCDlS3JyoGSvb0/pqMVfeR+XCxrfoa0wnGe//K629Su3y8nx/Skdtfgr7/PxU5DSzFufnsWcOXD00U4HUr4mJwdWF0+zFnx0Skct/sr75N2PaYKrl/4f99+PI1P+Kd+WnQ2fFs+1FnZ97mwYD9Hir7xLwVpMyi7WL5vKtGOHMneu04GULxo5Er6omotxAdWbnY7jEdrVU3mXN29EEuGmd37Dg/92OozyVUFBkDoyio6KIILafHNKRz3yV96jpQET/Anl65JJPOZEnaxFedS4cVBXFgdBFU5H8Qgt/sp7/PPnSIyLP757Lb/6ldNhlK8bNw4Ki4dhYpt9coA3Lf7Ka3QUPktrSTCluT9n7Fin0yhfN24cbCkei4QBu9c7HcfttPgr7/DBnwlMq+ffH5zBPffqqSrleePGwdoSe8yQfN+b0lGLv/IKLf+9G1e9sOdbj5OS4nQa5Q/GjYNPS+zuZIV5zobxAC3+atBrW/kvwkaVkPfpXK64aYjTcZSfSEqCbR2zMG1A7Ran47idFn816DW8thDTCvUnPUFoqNNplD8ZPS6EtvIQaNvjdBS30+KvBrWKlauJG5dPQd4Ejvv+eKfjKD8zdizUlCZASJXTUdzOY8VfRIaLyIcisllENorIDfb6BBFZKiL59m28pzIo71ez6GoIgMAz/qDDOKgBl5UFBUXpmLh90NHudBy38uSRfztwkzFmPDAL+LGI5AC3Au8bY8YA79vLSn3Dp//IZ/TUldRtGU7GyfOcjqP8UFYWbC0ZhwQD25c7HcetPFb8jTF7jTGr7fv1wGYgDTgLWGRvtgj4jqcyKO/V3Awx//oehEL4tx91Oo7yU6NHw6qSXGthx2fOhnGzAWnzF5FMYCqwHEgxxuwF6wMC6Lb7hohcKSJ5IpJXXl4+EDHVIPLXO/KYdEweLV+NIuRb33U6jvJTWVnwackca6F4tbNh3MzjxV9EooBXgIXGmLrePs8Y86QxJtcYk5ucnOy5gGrQycuDkxovhAAIP+8Zp+MoPxYfDwVMw+wD6rY5HcetPFr8RSQYq/AvNsa8aq8uFZFU+/FUoMyTGZR3aW6GN258kjFHb6ejbCaM15lalLOyxgTQWhYGHb41n68ne/sI8DSw2Rjzuy4PvQEssO8vAF73VAblfe66rYWfnbIQUxNA0OWvOR1HKUaPhsrSJAircTqKW3nyyH828H3gOBFZa/98G3gAOFFE8oET7WWl+PhjOGnX6USObEYSb4C4oU5HUoqsLNhZmIGJbYN9TU7HcRuPjZBljFkGHKxn9vGeel3lnaqq4NWb/8Yj172Pa88IAn72u56fpNQAyMqCzR+PZ3bQf2HbZzDxRKcjuYVe4ascZwz86rI8Hl6wAOoDCbj0Q6cjKbVfVhas2DvdWvCh7p46Nq5y3KL7N3P/zLkERriQI16CISOdjqTUfqNHw7JSu7tn2QZnw7iRHvkrR2169RO+FzaZsNQWSL4fZp7vdCSlvmbIENjTMR7TDDR85XQct9HirxxT+5+XGFdyLEHR7TQlPoGccZvTkZT6BhG7u2dlGHQUOx3HbbT4K0e0LXuZmD3zMe3Cjvg3iDzjKqcjKXVQWVlQWx4PIbVOR3EbLf5qwJntKwlcdyEdzYF8FPIZY8473elISh3S6NGwe+8wTKzvjO6pxV8NrMpC2l87GglzsaTgJU64eqbTiZTqUVYWbC/NQkLwmcnctfirgbOviZbHpxCU0sLf37uf8x88x+lESvVKVhZsKJtgLez4r7Nh3ESLvxoYLhcNDxxJ2KhK/vP2Dzj7r7cRoP/6lJfIyoLlpfa31OJ1zoZxE/3vpwZEzQOnEDVmC2uXfouj/ryI8HCnEynVe8OGweq6ozAuoMY3RvfU4q88rurB+cRlLmXP8kyG3vsxsbFOJ1Lq8AQEQOrIKFxVgbBvt9Nx3EKLv/KosoevJCHtJcrWDKX9mo0MTdOLypV3ysqChopoCKhwOopbaPFXHrP30ZtITvkLNZviab5sMyOzI5yOpFSfjR4NpSVDMFGNTkdxCy3+yiP2/Poahib8jsYd0TTM38SI8XFOR1KqX7KyYPveUUi0gQrvb/rR4q/c7qs7vkf68Ceoz4+j/rwtpE/QcfmV98vKgg0lE62FLR85msUdtPgrtzEdLrbfdCqjcl6gZtMQzFU7SM0Z5nQspdwiKws+LznKWti90tkwbqBn35RbNFU1UHPfNLKOzKdiXQYxt28kJCbK6VhKuU1GBnxWcYy1ULnR2TBuoMVf9Vvhynxi35rOsCNr2bNmLum//gAJ0n9ayrcEBUFcegIdlYEEthQ4HafftNlH9cvy379MyrIcokbWsmvXNQx/8BMt/MpnZWVBQ3kMBJY5HaXftPirPqmvhw9/eDUzYi4gINhFWfhfGHHbY07HUsqjsrJg796hmGjvn8hdi786bF981EDxzRM59vg/01IYh+u09aRccLnTsZTyuNGjYWvRGCTSwN58p+P0ixZ/1WuNjfCHG5aT81Eq4475kvoduYTfspfgkUc4HU2pAZGVBetKJlkLWz92Nkw/afFXvfLWW/CPs6/j2gmziB7ewL72G4m+cyWEhDkdTakBM2ZMl+6ee1Y4G6af9MycOqRNm+DRW7dyW8bJZC7YRXthFEGnvU7oEcc5HU2pAZeVBcvr5mFaQapXOx2nX7T4q24VF8Oi2z/jqLrbeeLMjyEUOiqOI2jh23q0r/xWYCCMnRBBS3EE4SFfOR2nX7T4q6+pyd/Fzj/cyai4N7jtRGuy6o49KQSe+CSB0850OJ1Szps6FXYXZDB2xlbE5cJbZyXyztTK7SrzVlN6Sw6xn2UyddbzRMQ101R0Akz7lMCflYAWfqUAq/iv3DENiTCwdZnTcfpMi7+f2/jRTnZcN4uEDUcyZMJmitZls4dnCV7YTMRPl0L2HKcjKjWoTJ0KSwtOshY2vOlsmH7QZh8/1NYGb79QRur732fGnHdhJlRsGEnLcX9l+P/NczqeUoPaxInwZtFZmA6Q8s+djtNnWvz9hDGwahV88PRqjiz/OWccu5TAk100bkvBdcyfSL74HKcjKuUVwsIgbUwcbXvDCBHvnc9Xi78vqquA9x+Foi/YV1fEvuY6DE1MTqwnd247AK274pBx9xP5vWscDquU98nNhcKCNEZO+Qppa4XgEKcjHTZt8/cV+5rgjV9iHhyFWZIMzfdCwnsEx28hNKacoJB29lWn0lbxbZj4LiG3VRNwghZ+pfrizDPhzTXfRqIMfPRnp+P0iRhjnM7Qo9zcXJOXl+d0jMGnrRU+eZrWFY8RnLARiTa4GoVtK8by1y9+yM6Uizj6rGGcdZY1FrlSyj2amyEnrYSvHk5FqibATRucjtQtEVlljMnt7jFt9vEmLheu7SupfXcRQeX/JnLYLgKiDcGpsGf1cF5dezHr027lmFNi+NkDkJjodGClfFN4OEw/YSjF69MZlr0RaW3xuosftfgPYh2F+VR99DZtW5cSadYSlVpCYLyL+ARwBQm7N2Sysfo0SqbexqyrhnFDDog4nVop/3DuufD3h+bz0+kPwdJH4LRbnY50WBxp9hGRU4BHgUDgKWPMA4fa3pebfVxNDVSv+JyGTXmYkg2EtGwjOnwnEUNqCIx37d+urSSIsj3plLRMpyHjLBJOvYCciUEEBjoYXik/1tgIM4+oYt0tyQS0ByIXfQWJ6U7H+ppDNfsMePEXkUBgG3AiUAisBC40xmw62HO8qfi3NzbRWFLKvtIyWqsqaSsvpr18J1JXSOC+vYSYckIDqwmLqCEsoYHA+A6ky2l30wrNRRHUVKZS3Tae5oRZhM85mzHHjCfE+zoUKOXTli2DJVc9yv/dupCOokSCTvgL5H7X6Vj7DbY2/xnAdmPMVwAi8iJwFnDQ4t9XpXceT3ysffm1AFgfdPubRsTsf2x/a0nndkI3j5ku23S5BSTIIGGGoCCI7RoiFOhyMGCaob0uiH314VTsGkHjjuG0hI3BDJ1MxIRZpMyYQmRMEBHAsL6+caXUgJgzB9ZecwMvPb+cCy56AbadjVkLHQ1BGAMYq0hYx9hilSADht61z4YEg0z4HZzwI7dnd6L4pwF7uiwXAjMP3EhErgSuBMjoY1eV9vDh1FUM2f8HgK6/dDngjyB0VvPOP9SB23beN1227dyHIYh2E0mHRNEREIUrKAYTEgMRSQSljCRsxBhixo0jOjWBYIFgIKpP70opNZhcey2UX/B3nnvqLibtuZ2E4HzCQ+uQ/QeRVoUAQLrc74W4eAiMjPdIbieafc4DTjbGXG4vfx+YYYy57mDP8aZmH6WUGiwO1ezjxEVehcDwLsvpQLEDOZRSym85UfxXAmNEZKSIhADzgTccyKGUUn5rwNv8jTHtInIt8B+srp5/NcZsHOgcSinlzxy5yMsY8y/gX068tlJKKR3YTSml/JIWf6WU8kNa/JVSyg9p8VdKKT/kFeP5i0g5sMvpHAdIAiqcDjEA/OV9gv+8V32fvudg73WEMSa5uyd4RfEfjEQk72BXzvkSf3mf4D/vVd+n7+nLe9VmH6WU8kNa/JVSyg9p8e+7J50OMED85X2C/7xXfZ++57Dfq7b5K6WUH9Ijf6WU8kNa/JVSyg9p8e8DETlFRLaKyHYRudXpPJ4gIsNF5EMR2SwiG0XkBqczeZKIBIrIGhF5y+ksniQicSKyRES22H/bo5zO5AkicqP97/ZLEXlBRMKczuQOIvJXESkTkS+7rEsQkaUikm/f9mrqLy3+h8megP5PwKlADnChiOQ4m8oj2oGbjDHjgVnAj330fXa6AdjsdIgB8CjwjjEmG5iMD75nEUkDrgdyjTETsIaOn+9sKrd5FjjlgHW3Au8bY8YA79vLPdLif/j2T0BvjGkFOieg9ynGmL3GmNX2/XqsIpHmbCrPEJF04DTgKaezeJKIxABHA08DGGNajTE1zqbymCAgXESCgAh8ZLZAY8wnQNUBq88CFtn3FwHf6c2+tPgfvu4moPfJothJRDKBqcByZ5N4zCPALYDL6SAeNgooB56xm7ieEpFIp0O5mzGmCHgI2A3sBWqNMe86m8qjUowxe8E6aAOG9OZJWvwPn3Szzmf7y4pIFPAKsNAYU+d0HncTkdOBMmPMKqezDIAgYBrwuDFmKtBIL5sIvInd5n0WMBIYBkSKyMXOphp8tPgfPr+ZgF5EgrEK/2JjzKtO5/GQ2cCZIlKA1YR3nIj8zdlIHlMIFBpjOr/BLcH6MPA1JwA7jTHlxpg24FXgWw5n8qRSEUkFsG/LevMkLf6Hzy8moBcRwWob3myM+Z3TeTzFGHObMSbdGJOJ9bf8wBjjk0eJxpgSYI+IjLNXHQ9scjCSp+wGZolIhP3v+Hh88MR2F28AC+z7C4DXe/MkR+bw9WZ+NAH9bOD7wAYRWWuv+7k9/7LyXtcBi+0Dl6+ASx3O43bGmOUisgRYjdVrbQ0+MtSDiLwAzAOSRKQQuAt4AHhZRH6I9cF3Xq/2pcM7KKWU/9FmH6WU8kNa/JVSyg9p8VdKKT+kxV8ppfyQFn+llPJDWvzVoCYiHSKytstPptOZ3EVELhGRcnuYhZO7vMcGe9TYtSLynIjMO3C0URF5VkTOPcS+HxSREhG52fPvRHkj7eevBrtmY8yUgz0oIkHGmPaBDORmLxljrrXv/wdARD4CbjbG5NnL8w53p8aYn4pIo7tCKt+jR/7K69hHzP8QkTeBd+11PxWRlSKyXkTu6bLt7fZR9Hv2uO432+s/EpFc+36SPbxD57j+D3bZ11X2+nn2czrHwl9sXz2KiEwXkf+KyDoRWSEi0SLyqYhM6ZLjMxGZ5IHfRW6XbwwbREQv3FG9okf+arAL73KF8U5jzHft+0cBk4wxVSJyEjAGa7htAd4QkaOxBi6bjzUiaRDWFZ89DeD2Q6xRIKeLSCjwmYh0jgg5FTgCayynz4DZIrICeAm4wBiz0h42uRlreOhLgIUiMhYINcas78fvYW6X3wNABvCW/e1gClhNPcA7/XgN5Ue0+KvBZUUUGgAAAhJJREFU7mDNPkuNMZ3jmp9k/6yxl6OwPgyi4f/bu2PQKIIojOP/r0wR0lnEQitRBBu1FQsJCAoKEpsYJJ2gYGMlQqxsUmklCtZiYR0FEVMICYaUlgqCRSolRAyGz2LmdHOeiZhL4LLfr7rb251hin3svVne47ntVQBJ/1KDaQw41sinj9Sx1oB525/qWEvAQeAL8Nn2AkCn8qmkZ8AdSbeAKUoTju2Ys32u80XShvEkjVOKtI1tc55oiQT/GFTNfLaAe7YfNk+QdJO/l9v+we+0Z7PFn4Abtme7xjoNfG8cWqfcP+o1h+1VSS8ppYXHgRNbrOe/SToK3AVO2V7fqXlib0nOP/aCWWCq9h5A0n5J+4A3wEVJQ5KGgfONaz4Ax+vnS11jXavlrJF0aIuGJ++BUUkn6/nDKt2joKR+7gMLjX8pfSVphFKKetL28k7MEXtTnvxj4Nl+IekI8Lbuwa4AE7YXJT0FloCPwFzjshlKJcQrwKvG8ceUdM5i3dBdZpO2eLbXJF0GHkgaouT7zwArtt9J+go86dNSe7kAHAAe1bWz2dtRER2p6hmtIWmaEpRndmm+UeA1cNj2Hy0iJV2lNBm/3v1bn+afZhfXG4MlaZ+IHSBpktLz+HavwF99A85K6nvj+PrmzwQb90YifsmTf0REC+XJPyKihRL8IyJaKME/IqKFEvwjIloowT8iooV+Ap0NSjKVnH2ZAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "phono_bulk_1.plot_dos(ax=ax, color='b', label='bulk')\n",
    "phon_vac_i.plot_dos(ax=ax, color='r', label='vac_i')\n",
    "phon_vac_f.plot_dos(ax=ax, color='orange', label='vac_f')\n",
    "plt.legend()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Attack frequency\n",
    "\n",
    "Now we get the attack frequency by comparing the individual phonon spectra of initial and transition states"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:51:48.266301Z",
     "start_time": "2019-09-04T10:51:48.257052Z"
    }
   },
   "outputs": [],
   "source": [
    "# Interpolate initial and final positions to guesstimate the transition state\n",
    "sc_vac_ts = sc_vac_i.copy()\n",
    "sc_vac_ts.positions = 0.5 * (sc_vac_i.positions + sc_vac_f.positions)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:51:48.435722Z",
     "start_time": "2019-09-04T10:51:48.267775Z"
    }
   },
   "outputs": [],
   "source": [
    "job_vac_ts = pr_vac.create_job(pr.job_type.Lammps, \"VacancyTransition\")\n",
    "job_vac_ts.potential = pot\n",
    "job_vac_ts.structure = sc_vac_ts\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:51:50.090161Z",
     "start_time": "2019-09-04T10:51:48.466378Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The job VacancyTransition was saved and received the ID: 3596670\n"
     ]
    }
   ],
   "source": [
    "# We _don't_ relax this job, or it would fall into the initial or final state!\n",
    "job_vac_ts.calc_static()\n",
    "job_vac_ts.run()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:51:50.634265Z",
     "start_time": "2019-09-04T10:51:50.092331Z"
    }
   },
   "outputs": [],
   "source": [
    "phon_vac_ts = make_phonopy_job(job_vac_ts, \"PhonoVacTransition\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:57:02.159948Z",
     "start_time": "2019-09-04T10:51:50.665611Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The job PhonoVacTransition was saved and received the ID: 3596673\n",
      "The job supercell_phonon_0 was saved and received the ID: 3596676\n",
      "The job supercell_phonon_1 was saved and received the ID: 3596678\n",
      "The job supercell_phonon_2 was saved and received the ID: 3596681\n",
      "The job supercell_phonon_3 was saved and received the ID: 3596683\n",
      "The job supercell_phonon_4 was saved and received the ID: 3596686\n",
      "The job supercell_phonon_5 was saved and received the ID: 3596688\n",
      "The job supercell_phonon_6 was saved and received the ID: 3596691\n",
      "The job supercell_phonon_7 was saved and received the ID: 3596693\n",
      "The job supercell_phonon_8 was saved and received the ID: 3596695\n",
      "The job supercell_phonon_9 was saved and received the ID: 3596698\n",
      "The job supercell_phonon_10 was saved and received the ID: 3596700\n",
      "The job supercell_phonon_11 was saved and received the ID: 3596703\n",
      "The job supercell_phonon_12 was saved and received the ID: 3596705\n",
      "The job supercell_phonon_13 was saved and received the ID: 3596707\n",
      "The job supercell_phonon_14 was saved and received the ID: 3596709\n",
      "The job supercell_phonon_15 was saved and received the ID: 3596712\n",
      "The job supercell_phonon_16 was saved and received the ID: 3596714\n",
      "The job supercell_phonon_17 was saved and received the ID: 3596716\n",
      "The job supercell_phonon_18 was saved and received the ID: 3596719\n",
      "The job supercell_phonon_19 was saved and received the ID: 3596721\n",
      "The job supercell_phonon_20 was saved and received the ID: 3596723\n",
      "The job supercell_phonon_21 was saved and received the ID: 3596726\n",
      "The job supercell_phonon_22 was saved and received the ID: 3596728\n",
      "The job supercell_phonon_23 was saved and received the ID: 3596731\n",
      "The job supercell_phonon_24 was saved and received the ID: 3596733\n",
      "The job supercell_phonon_25 was saved and received the ID: 3596735\n",
      "The job supercell_phonon_26 was saved and received the ID: 3596738\n",
      "The job supercell_phonon_27 was saved and received the ID: 3596740\n",
      "The job supercell_phonon_28 was saved and received the ID: 3596742\n",
      "The job supercell_phonon_29 was saved and received the ID: 3596744\n",
      "The job supercell_phonon_30 was saved and received the ID: 3596746\n",
      "The job supercell_phonon_31 was saved and received the ID: 3596749\n",
      "The job supercell_phonon_32 was saved and received the ID: 3596751\n",
      "The job supercell_phonon_33 was saved and received the ID: 3596754\n",
      "The job supercell_phonon_34 was saved and received the ID: 3596756\n",
      "The job supercell_phonon_35 was saved and received the ID: 3596758\n",
      "The job supercell_phonon_36 was saved and received the ID: 3596760\n",
      "The job supercell_phonon_37 was saved and received the ID: 3596762\n",
      "The job supercell_phonon_38 was saved and received the ID: 3596765\n",
      "The job supercell_phonon_39 was saved and received the ID: 3596767\n",
      "The job supercell_phonon_40 was saved and received the ID: 3596769\n",
      "The job supercell_phonon_41 was saved and received the ID: 3596772\n",
      "The job supercell_phonon_42 was saved and received the ID: 3596774\n",
      "The job supercell_phonon_43 was saved and received the ID: 3596776\n",
      "The job supercell_phonon_44 was saved and received the ID: 3596778\n",
      "The job supercell_phonon_45 was saved and received the ID: 3596781\n",
      "The job supercell_phonon_46 was saved and received the ID: 3596782\n",
      "The job supercell_phonon_47 was saved and received the ID: 3596783\n",
      "The job supercell_phonon_48 was saved and received the ID: 3596784\n",
      "The job supercell_phonon_49 was saved and received the ID: 3596785\n",
      "The job supercell_phonon_50 was saved and received the ID: 3596786\n",
      "The job supercell_phonon_51 was saved and received the ID: 3596788\n",
      "The job supercell_phonon_52 was saved and received the ID: 3596790\n",
      "The job supercell_phonon_53 was saved and received the ID: 3596792\n",
      "The job supercell_phonon_54 was saved and received the ID: 3596794\n",
      "The job supercell_phonon_55 was saved and received the ID: 3596796\n",
      "The job supercell_phonon_56 was saved and received the ID: 3596798\n",
      "The job supercell_phonon_57 was saved and received the ID: 3596799\n",
      "The job supercell_phonon_58 was saved and received the ID: 3596801\n",
      "The job supercell_phonon_59 was saved and received the ID: 3596803\n",
      "The job supercell_phonon_60 was saved and received the ID: 3596806\n",
      "The job supercell_phonon_61 was saved and received the ID: 3596808\n",
      "The job supercell_phonon_62 was saved and received the ID: 3596810\n",
      "The job supercell_phonon_63 was saved and received the ID: 3596813\n",
      "The job supercell_phonon_64 was saved and received the ID: 3596815\n",
      "The job supercell_phonon_65 was saved and received the ID: 3596817\n",
      "The job supercell_phonon_66 was saved and received the ID: 3596819\n",
      "The job supercell_phonon_67 was saved and received the ID: 3596822\n",
      "The job supercell_phonon_68 was saved and received the ID: 3596824\n",
      "The job supercell_phonon_69 was saved and received the ID: 3596826\n",
      "The job supercell_phonon_70 was saved and received the ID: 3596829\n",
      "The job supercell_phonon_71 was saved and received the ID: 3596831\n",
      "The job supercell_phonon_72 was saved and received the ID: 3596833\n",
      "The job supercell_phonon_73 was saved and received the ID: 3596836\n",
      "The job supercell_phonon_74 was saved and received the ID: 3596838\n",
      "The job supercell_phonon_75 was saved and received the ID: 3596842\n",
      "The job supercell_phonon_76 was saved and received the ID: 3596846\n",
      "The job supercell_phonon_77 was saved and received the ID: 3596850\n",
      "The job supercell_phonon_78 was saved and received the ID: 3596855\n",
      "The job supercell_phonon_79 was saved and received the ID: 3596858\n",
      "The job supercell_phonon_80 was saved and received the ID: 3596863\n",
      "The job supercell_phonon_81 was saved and received the ID: 3596866\n",
      "The job supercell_phonon_82 was saved and received the ID: 3596869\n",
      "The job supercell_phonon_83 was saved and received the ID: 3596874\n",
      "The job supercell_phonon_84 was saved and received the ID: 3596878\n",
      "The job supercell_phonon_85 was saved and received the ID: 3596881\n",
      "The job supercell_phonon_86 was saved and received the ID: 3596885\n",
      "The job supercell_phonon_87 was saved and received the ID: 3596890\n",
      "The job supercell_phonon_88 was saved and received the ID: 3596894\n",
      "The job supercell_phonon_89 was saved and received the ID: 3596898\n",
      "The job supercell_phonon_90 was saved and received the ID: 3596902\n",
      "The job supercell_phonon_91 was saved and received the ID: 3596907\n",
      "The job supercell_phonon_92 was saved and received the ID: 3596911\n",
      "The job supercell_phonon_93 was saved and received the ID: 3596915\n",
      "The job supercell_phonon_94 was saved and received the ID: 3596920\n"
     ]
    }
   ],
   "source": [
    "phon_vac_ts.run()\n",
    "tp_vac_ts = phon_vac_ts.get_thermal_properties(temperatures=temperatures) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:57:11.358756Z",
     "start_time": "2019-09-04T10:57:02.217501Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x2b61db5474e0>"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# The transition state has an imaginary mode (frequency < 0), let's see it\n",
    "fig, ax = plt.subplots()\n",
    "phon_vac_i.plot_dos(ax=ax, color='r', label='initial')\n",
    "phon_vac_ts.plot_dos(ax=ax, color='b', label='transition')\n",
    "plt.legend()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To calculate the attack frequency, we'll ignore both the negative mode of the transition state (which we were warned about in the equation), as well as the three frequencies which correspond to rigid translation and are very near zero, and sometimes dip to be negative. Phonopy sorts the frequencies by magnitude, so we can just skip the first three and four for the initial and transition states, respectively. We take them at q=0."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:57:11.920750Z",
     "start_time": "2019-09-04T10:57:11.360499Z"
    }
   },
   "outputs": [],
   "source": [
    "freq_i = phon_vac_i.phonopy.get_frequencies(0)[3:] \n",
    "freq_ts = phon_vac_i.phonopy.get_frequencies(0)[4:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:57:11.961543Z",
     "start_time": "2019-09-04T10:57:11.926145Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6.870675816849329e+236\n"
     ]
    }
   ],
   "source": [
    "print(np.prod(freq_i))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Recall: $\\nu_0^\\star = \\prod_{i=1}^{3N-3} \\nu_i^\\mathrm{IS} / \\prod_{i=1}^{3N-4} \\nu_i^\\mathrm{TS}$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-04T10:57:11.973754Z",
     "start_time": "2019-09-04T10:57:11.962912Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Attack frequency is  2.6826827779812032 THz (10^-12 s)\n"
     ]
    }
   ],
   "source": [
    "# Products are dangerous beasts, so we'll do a little numeric magic\n",
    "nu = np.prod(freq_i[:-1] / freq_ts) * freq_i[-1]\n",
    "print(\"Attack frequency is \", nu, \"THz (10^-12 s)\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Mantina *et al.* (PRL 2008) report $\\nu = 19.3$ THz using DFT and NEB, so our linearly-interpolated \"transition state\" with EAM is actually not doing so poorly.\n",
    "\n",
    "There are many more things you can do with phonopy, including looking directly at the force constants, the Hessian matrix, etc. But hopefully this is a useful starting point."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
